﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Tibet.GUI.Contrato;
using Tibet.GUI.Presentador;
using System.Windows.Forms;

namespace Tibet.GUI.Vista
{
    /// <summary>
    /// Clase para mostrar la página de modificación de usuarios
    /// </summary>
    public partial class ModificacionUsuario : System.Web.UI.Page, 
        IContratoBusquedaUsuario, IContratoModificacionUsuario
    {
        private PresentadorBusquedaUsuario _presentadorBusquedaUsuario;
        private PresentadorModificacionUsuario _presentadorModificacionUsuario;

        /// <summary>
        /// Constructor de la clase
        /// </summary>
        public ModificacionUsuario()
        {
            _presentadorBusquedaUsuario =
                new PresentadorBusquedaUsuario( this );

            _presentadorModificacionUsuario = 
                new PresentadorModificacionUsuario( this );
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        /// <summary>
        /// Muestra un mensaje de error indicando que el nombre de usuario no 
        /// se encuentra registrado
        /// </summary>
        public void MostrarErrorBusqueda()
        {
            MessageBox.Show( "El nombre de usuario no se encuentra " +
                "registrado en la base de datos", "Usuario no registrado",
                MessageBoxButtons.OK, MessageBoxIcon.Error );
        }

        /// <summary>
        /// Actualiza los campos de texto de la interfaz con los datos de 
        /// usuario encontrados
        /// </summary>
        /// <param name="usuario">
        /// Cadena de caracteres que contiene los datos del usuario en el 
        /// formato NombreUsuario:Nombre:Apellido:Contrasenha:Email
        /// </param>
        private void MostrarDatos( string usuario )
        {
            string[] datosUsuario = usuario.Split( ':' );
            _nombreUsuarioTextboxModificar.Text = datosUsuario[ 0 ];
            _nombreTextbox.Text = datosUsuario[ 1 ];
            _apellidoTextbox.Text = datosUsuario[ 2 ];
            _contrasenhaTextbox.Text = datosUsuario[ 3 ];
            _confirmacionContrasenhaTextbox.Text = datosUsuario[ 3 ];
            _emailTextbox.Text = datosUsuario[ 4 ];
        }

        /// <summary>
        /// Código a ejecutar cuando el usuario presiona el botón Buscar para
        /// buscar un usuario
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void _botonBuscar_Click( object sender, EventArgs e )
        {
            string usuario = _presentadorBusquedaUsuario.ClickBuscar();

            if ( usuario.Equals( "false" ) )
                MostrarErrorBusqueda();

            else
                MostrarDatos( usuario );
        }

        /// <summary>
        /// Código a ejecutar cuando el usuario presiona el botón Modificar 
        /// para modificar un usuario
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void _botonModificar_Click(object sender, EventArgs e)
        {
            Page.Validate( "grupoModificarUsuario" );

            if (Page.IsValid)
            {
                bool modificacionUsuario = 
                    _presentadorModificacionUsuario.ClickModificar();

                string mensaje;
                MessageBoxIcon mci = new MessageBoxIcon();

                if ( modificacionUsuario )
                {
                    mensaje = "El usuario fue modificado con éxito!";
                    mci = MessageBoxIcon.Information;
                }

                else
                {
                    mensaje = "No se ha podido modificar el usuario!";
                    mci = MessageBoxIcon.Error;
                }

                MessageBox.Show( mensaje, "Modificación de usuario", 
                    MessageBoxButtons.OK, mci );
            }
        }
        
        /// <summary>
        /// Get del campo de texto Usuario
        /// </summary>
        public string NombreUsuario
        {
            get
            {
                return _nombreUsuarioTextboxBuscar.Text;
            }
        }

        /// <summary>
        /// Get del campo de texto Nombre
        /// </summary>
        public string Nombre
        {
            get
            {
                return _nombreTextbox.Text;
            }
        }

        /// <summary>
        /// Get del campo de texto Apellido
        /// </summary>
        public string Apellido
        {
            get
            {
                return _apellidoTextbox.Text;
            }
        }

        /// <summary>
        /// Get del campo de texto Contrasenha
        /// </summary>
        public string Contrasenha
        {
            get
            {
                return _contrasenhaTextbox.Text;
            }
        }

        /// <summary>
        /// Get del campo de texto Email
        /// </summary>
        public string Email
        {
            get
            {
                return _emailTextbox.Text;
            }
        }
    }
}